You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
36 lines
959 B
36 lines
959 B
import { dbGlobal } from "drizzle-pkg/lib/db";
|
|
import { users, sessions } from "drizzle-pkg/lib/schema/auth";
|
|
import { eq } from "drizzle-orm";
|
|
import log4js from "logger";
|
|
|
|
const logger = log4js.getLogger("USERS");
|
|
|
|
export default defineWrappedResponseHandler(async (event) => {
|
|
const id = Number(event.context.params?.id);
|
|
|
|
if (!id || isNaN(id)) {
|
|
throw createError({
|
|
statusCode: 400,
|
|
statusMessage: "无效的用户ID",
|
|
});
|
|
}
|
|
|
|
const [user] = await dbGlobal
|
|
.select({ id: users.id, username: users.username })
|
|
.from(users)
|
|
.where(eq(users.id, id));
|
|
|
|
if (!user) {
|
|
throw createError({
|
|
statusCode: 404,
|
|
statusMessage: "用户不存在",
|
|
});
|
|
}
|
|
|
|
await dbGlobal.delete(sessions).where(eq(sessions.userId, id));
|
|
await dbGlobal.delete(users).where(eq(users.id, id));
|
|
|
|
logger.info("user deleted by admin: %s (id: %d)", user.username, id);
|
|
|
|
return R.success({ message: "用户已删除" });
|
|
});
|
|
|